/* 
 * File:   oclDistroFix.h
 * Author: cbender
 *
 * Created on 27. August 2014, 11:30
 */

#ifndef OCLDISTROFIX_H
#define	OCLDISTROFIX_H

// standard utilities and systems includes
#include "structs.h"
#include <oclUtils.h>
#include <fstream>
#include <memory>
#include <iostream>
#include <cassert>
#include <omp.h>
#include "oclFFT.h"
#include "cpuFFT.h"
#define _USE_MATH_DEFINES
#include <math.h>


////////////////////////////////////////////////////////////////////////////////
// declaration, forward
void normalize_peaks(isotope* peaks);
isotope *remove_peak(isotope *base,isotope *peak);
void free_list(isotope *target);
isotope *add_peak_sorted(isotope *base, isotope *peak);
void runOldCPUImplParallel(input_data data[], unsigned int size, isotope outarray[], int numthreads);
void runOldCPUImpl(input_data* data, isotope* out);
void runNewCPUImplParallel(input_data data[], unsigned int size, isotope outarray[], int numthreads);
void runNewCPUImpl(input_data* data, isotope* out);
void runGPUImpl(input_data[], unsigned int, isotope[], bool);

#endif	/* OCLDISTROFIX_H */

